Bài học Scratch cho học sinh THCS

Phát hiện va chạm và giới hạn biên màn hình

Học cách nhân vật "cảm nhận" va chạm với đối tượng khác và không vượt ra ngoài sân khấu — kỹ năng cốt lõi để làm game trên Scratch.

Va chạm trong game là gì?

Va chạm (collision) xảy ra khi hai đối tượng trên sân khấu chạm vào nhau — nhân vật đụng tường, nhặt đồng xu, bị quái vật bắt… Trong Scratch, máy tính tự kiểm tra xem các hình ảnh có chồng lên nhau không, rồi kích hoạt hành động tương ứng.

Game platformer Scratch
Game platformer dựa nhiều vào phát hiện va chạm giữa nhân vật, nền và vật cản

Phát hiện va chạm giúp game có luật chơi: ăn được gì, chạm gì thì thua, đụng tường thì dừng lại. Không có va chạm, nhân vật sẽ xuyên qua mọi thứ — game mất ý nghĩa.

💡 Ghi nhớ

Scratch kiểm tra va chạm dựa trên vùng hình ảnh không trong suốt (pixel) của nhân vật, không phải chỉ khung hình chữ nhật bao quanh.

Giới hạn biên màn hình

Sân khấu Scratch có kích thước cố định 480 × 360 pixel. Nhân vật di chuyển tự do có thể "bay" ra ngoài màn hình nếu không xử lý biên. Giới hạn biên giúp nhân vật luôn nằm trong vùng nhìn thấy được.

Mé tráix = −240
Tâmx = 0, y = 0
Mé phảix = 240
Trêny = 180
Sân khấu480 × 360
Dướiy = −180
Sân khấu Scratch
Sân khấu Scratch có biên rõ ràng — nhân vật cần xử lý khi chạm mép

Khối "chạm cạnh?" — Giới hạn biên đơn giản

Khối chạm cạnh? (nhóm Cảm biến) trả về đúng khi nhân vật chạm bất kỳ mép nào của sân khấu. Đây là cách nhanh nhất để xử lý biên.

bật lại (bounce) Nhân vật đổi hướng như quả bóng đụng tường — phù hợp game bóng, rắn săn mồi.
đặt vị trí / trượt Kéo nhân vật về trong biên — kiểm soát chính xác hơn.
📌 Ví dụ — Bóng nảy qua lại
khi nhấn cờ xanh quay về hướng (45) lặp vô hạn tiến (5) bước nếu <chạm cạnh?> thì bật lại

Bóng di chuyển liên tục và đổi hướng mỗi khi chạm mép sân khấu.

Giới hạn biên bằng tọa độ

Cách bật lại đôi khi không phù hợp (nhân vật đi bộ không nên "nảy"). Khi đó, dùng điều kiện tọa độ để giới hạn vị trí:

lặp vô hạn nếu <phím [mũi tên phải v] được nhấn?> thì đổi x đi (5) nếu <x vị trí > 230> thì đặt x của vị trí thành (230)

Khi x vượt quá 230 (gần mép phải), nhân vật bị "kéo" về — không thể đi thêm. Làm tương tự cho trái (−230), trên (170), dưới (−170).

💡 Mẹo

Dùng 230 thay vì 240 vì nhân vật có kích thước — tâm nhân vật ở 240 thì một nửa hình vẫn nằm ngoài màn hình.

Phát hiện va chạm giữa hai nhân vật

Khối chạm [tên nhân vật]? kiểm tra hai nhân vật có chồng lên nhau không. Đây là nền tảng của hầu hết tương tác trong game.

Các tình huống thường gặp

📌 Ví dụ — Nhặt sao tăng điểm
khi nhấn cờ xanh đi đến vị trí ngẫu nhiên hiện lặp vô hạn nếu <chạm [Nhân vật chính v]?> thì thay đổi [điểm v] đi (10) phát âm thanh [ting v] ẩn chờ (1) giây đi đến vị trí ngẫu nhiên hiện

Phát hiện va chạm với màu (nền)

Khối chạm màu [#…]? kiểm tra nhân vật có chạm vùng màu cụ thể trên sân khấu không. Rất hữu ích khi nền có màu đại diện cho đất, nước, lava…

Luồng kiểm tra va chạm
Logic va chạm thường nằm trong vòng lặp: kiểm tra → phản ứng → lặp lại
📌 Ví dụ — Nhảy chỉ khi đứng trên đất
khi phím [cách v] được nhấn nếu <chạm màu [#00cc00]?> thì lặp 15 lần đổi y đi (8) chờ (0.02) giây lặp 15 lần đổi y đi (-8) chờ (0.02) giây không thì nói "Phải đứng trên mặt đất!" trong 1 giây

Dùng bút eyedropper trong Scratch để lấy đúng mã màu của nền đất trên phông nền.

💡 Lưu ý

Va chạm màu chỉ hoạt động tốt khi phông nền có màu rõ ràng, đồng nhất. Nền gradient hoặc ảnh phức tạp có thể gây nhầm lẫn.

Khoảng cách — Va chạm mềm

Thay vì chờ hai nhân vật chồng hẳn lên nhau, bạn có thể dùng khoảng cách đến [nhân vật] để phát hiện khi chúng đủ gần:

nếu <khoảng cách đến [Kẻ thù v] < 80> thì nói "Nguy hiểm!" trong 1 giây

Cách này tạo "vùng cảnh báo" quanh nhân vật — hữu ích cho game né tránh, radar, hoặc khi hình ảnh nhân vật có nhiều khoảng trống trong suốt.

Kết hợp va chạm và giới hạn biên

Game thực tế thường xử lý cả hai cùng lúc trong một vòng lặp:

khi nhấn cờ xanh lặp vô hạn nếu <phím [mũi tên phải v] được nhấn?> thì đổi x đi (4) nếu <phím [mũi tên trái v] được nhấn?> thì đổi x đi (-4) nếu <chạm cạnh?> thì bật lại nếu <chạm [Vật cản v]?> thì đổi x đi (-8) nói "Ôi!" trong 0.5 giây nếu <chạm [Đồng xu v]?> thì thay đổi [điểm v] đi (5)
💡 Ghi nhớ

Đặt kiểm tra biên trước, rồi mới kiểm tra va chạm với đối tượng — thứ tự điều kiện ảnh hưởng đến hành vi nhân vật.

Dự án thực hành: Game né chướng ngại vật

  1. Tạo nhân vật chính, biến điểmmạng.
  2. Điều khiển bằng 4 phím mũi tên trong vòng lặp vô hạn.
  3. Thêm nếu chạm cạnh thì bật lại hoặc giới hạn tọa độ.
  4. Tạo chướng ngại vật di chuyển ngẫu nhiên — nếu chạm thì trừ mạng.
  5. Tạo vật phẩm — nếu chạm thì +điểm và ẩn vật phẩm.
  6. Nếu mạng = 0 → thua; nếu điểm ≥ 30 → thắng.
Logo Scratch
Thực hành trên Scratch để nắm vững va chạm và giới hạn biên

Lỗi thường gặp

📌 Bài tập gợi ý
  • Bài 1: Rắn săn mồi — chạm cạnh thì bật lại, chạm đuôi thì thua.
  • Bài 2: Nhân vật chỉ di chuyển trong hình chữ nhật an toàn.
  • Bài 3: Game thu thập — chạm vàng +1, chạm đỏ −1, ra ngoài biên thì reset vị trí.
💡 Lời kết

Phát hiện va chạm và giới hạn biên biến sân khấu Scratch từ "màn hình trống" thành thế giới có luật. Hãy bắt đầu với chạm cạnh?chạm [nhân vật]?, rồi dần thêm va chạm màu, khoảng cách — bạn sẽ tạo được game hoàn chỉnh và thú vị!